package com.zhu.rtda.heap.constant;

import com.zhu.classfile.constant.base.ConstantClassInfo;
/**
 * 类符号引用（对应 Go 的 ClassRef）
 *
 * 用于表示对一个类或接口的引用。
 * 在 class 文件中，由 CONSTANT_Class_info 表示。
 */
public class ClassRef extends SymRef {

    /**
     * 从 class 文件的 CONSTANT_Class_info 创建类符号引用
     *
     * @param cp       运行时常量池
     * @param classInfo class 文件中的 CONSTANT_Class_info
     * @return 新建的类符号引用
     */
    public static ClassRef newClassRef(RuntimeConstantPool cp, ConstantClassInfo classInfo) {
        ClassRef ref = new ClassRef();
        //表示的该符号引用属于哪个常量池
        //但是该符号引用代表哪个类并没有解析
        ref.runtimeConstantPool = cp;
        // 获取类的全限定名
        ref.className = classInfo.getClassName();
        return ref;
    }
}